#ifndef __PauseState_H__
#define __PauseState_H__

#include <Ogre.h>

#include "GameState.h"

class PauseState : public GameState
{
public:
	void enter();
	void exit();

	void pause();
	void resume();

	bool keyPressed(const OIS::KeyEvent &arg);
	bool keyReleased(const OIS::KeyEvent &arg);

	bool mouseMoved( const OIS::MouseEvent &arg );
	bool mousePressed( const OIS::MouseEvent &arg, OIS::MouseButtonID id );
	bool mouseReleased( const OIS::MouseEvent &arg, OIS::MouseButtonID id );

	bool frameStarted(const Ogre::FrameEvent& evt);
	bool frameEnded(const Ogre::FrameEvent& evt);

	static PauseState* getInstance() { return &mPauseState; }

protected:
	PauseState() { }

	Ogre::Root *mRoot;
	Ogre::SceneManager* mSceneMgr;
	Ogre::Viewport* mViewport;
	DeviceManager* mDeviceManager;
	OIS::Keyboard* mKeyboard;
	OIS::Mouse* mMouse;
	Ogre::Camera* mCamera;


private:
	static PauseState mPauseState;
};

#endif